package base;

public class P5_LeiXingZhuanHuan{
	/*
	 * Java 强类型语言  类型转换
	 * 1.不能对布尔值转换
	 * 2.不能转换两个不想关的对象
	 * 3.高容量到低容量 强制转换
	 * 4.可能会有精度问题 内存溢出等
	 * 
	 * byte short char --> int --> long --> float --> double
	 */
	
	public static void main(String[] args) {
		int i = 328;
		double d = i;  // 自动转换
		byte b = (byte)i;  // 强制类型转换 带括号
		
		System.out.println(i);
		System.out.println(d);
		System.out.println(b);
		
		System.out.println((int)-23.232f);  // 高到低自动转
		
		char chr_a = 'a';
		int int_b = chr_a+1;  // 98
		System.out.println(int_b); 
		char chr_c = (char)int_b;
		System.out.println(chr_c);  // 'b'
	
	
	/*
	 * ==========================================
	 * 大数据 溢出问题
	 * JDK7 新特性 数字之间可以加下划线 10_0000_0000
	 * ==========================================
	 */
	
	int money = 10_0000_0000;
	int years = 20;
	int total = money*years;  // -1474836480, 计算过程中已经溢出
	long total_2 = money*years;  // 先按int计算， 再转换为long 仍然错误
	System.out.println(total);
	System.out.println(total_2);
	
	System.out.println(money*(long)years);  // 解决方法：把一个转换为Long即可  20000000000

	
	}
	
}
